package com.ruoyi.fire.domain;

import com.alibaba.fastjson2.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 建筑物对象 t_building
 *
 * @author ruoyi
 * @date 2025-11-02
 */
@Data
@ApiModel(value = "TBuilding", description = "建筑物对象")
public class TBuilding extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    @ApiModelProperty("主键")
    @TableId(value = "id", type = IdType.ASSIGN_UUID)
    private String id;

    /**
     * 单位ID
     */
    @ApiModelProperty("单位ID")
    @Excel(name = "单位ID")
    @JSONField(name = "unit_id")
    private String unitId;

    /**
     * 联网单位建筑物ID
     */
    @ApiModelProperty("联网单位建筑物ID")
    @Excel(name = "联网单位建筑物ID")
    @JSONField(name = "building_id")
    private String buildingId;

    /**
     * 建、构筑物名称
     */
    @ApiModelProperty("建、构筑物名称")
    @Excel(name = "建、构筑物名称")
    @JSONField(name = "bd_name")
    private String bdName;

    /**
     * 建筑地址信息
     */
    @ApiModelProperty("建筑地址信息")
    @Excel(name = "建筑地址信息")
    @JSONField(name = "bd_address")
    private String bdAddress;

    /**
     * 建、构筑物类别,通过建筑基础信息获取
     */
    @ApiModelProperty("建、构筑物类别,通过建筑基础信息获取")
    @Excel(name = "建、构筑物类别,通过建筑基础信息获取")
    @JSONField(name = "bd_type_id")
    private Long bdTypeId;

    /**
     * 使用性质,通过建筑基础信息获取
     */
    @ApiModelProperty("通过建筑基础信息获取")
    @Excel(name = "使用性质,通过建筑基础信息获取")
    @JSONField(name = "bd_use_way_id")
    private Long bdUseWayId;

    /**
     * 结构类型,通过建筑基础信息获取
     */
    @ApiModelProperty("结构类型")
    @Excel(name = "结构类型,通过建筑基础信息获取")
    @JSONField(name = "bd_structure_id")
    private Long bdStructureId;

    /**
     * 建筑使用层数
     */
    @ApiModelProperty("建筑使用层数")
    @Excel(name = "建筑使用层数")
    @JSONField(name = "bd_use_floor")
    private Long bdUseFloor;

    /**
     * 建筑使用层数
     */
    @ApiModelProperty("火灾危险性")
    @Excel(name = "火灾危险性")
    @JSONField(name = "bd_fire_hazard_id")
    private Long bdFireHazardId;

    /**
     * 耐火等级,通过建筑基础信息获取
     */
    @ApiModelProperty("耐火等级")
    @Excel(name = "耐火等级,通过建筑基础信息获取")
    @JSONField(name = "bd_fire_resistant_id")
    private Long bdFireResistantId;

    /**
     * 建筑高度 单位：m，精确到小数点后2位
     */
    @ApiModelProperty("建筑高度")
    @Excel(name = "建筑高度 单位：m，精确到小数点后2位")
    @JSONField(name = "bd_height")
    private Long bdHeight;

    /**
     * 建筑面积 单位：m2
     */
    @ApiModelProperty("建筑面积")
    @Excel(name = "建筑面积 单位：m2")
    @JSONField(name = "bd_space")
    private Long bdSpace;

    /**
     * 建筑安全距离 单位：m，精确到小数点后2位
     */
    @ApiModelProperty("建筑安全距离")
    @Excel(name = "建筑安全距离 单位：m，精确到小数点后2位")
    @JSONField(name = "bd_safe_distance")
    private Long bdSafeDistance;

    /**
     * 占地面积 单位：m2
     */
    @ApiModelProperty("占地面积")
    @Excel(name = "占地面积 单位：m2")
    @JSONField(name = "bd_occupy_space")
    private Long bdOccupySpace;

    /**
     * 标准层面积 单位：m2
     */
    @ApiModelProperty("标准层面积")
    @Excel(name = "标准层面积 单位：m2")
    @JSONField(name = "bd_std_floor_space")
    private Long bdStdFloorSpace;

    /**
     * 地上层数
     */
    @ApiModelProperty("地上层数")
    @Excel(name = "地上层数")
    @JSONField(name = "bd_over_ground_floor")
    private Long bdOverGroundFloor;

    /**
     * 地上层面积 单位：m2
     */
    @ApiModelProperty("地上层面积")
    @Excel(name = "地上层面积 单位：m2")
    @JSONField(name = "bd_over_ground_space")
    private Long bdOverGroundSpace;

    /**
     * 地下层数
     */
    @ApiModelProperty("地下层数")
    @Excel(name = "地下层数")
    @JSONField(name = "bd_under_ground_floor")
    private Long bdUnderGroundFloor;

    /**
     * 地下层面积 单位：m2
     */
    @ApiModelProperty("地下层面积")
    @Excel(name = "地下层面积 单位：m2")
    @JSONField(name = "bd_under_ground_space")
    private Long bdUnderGroundSpace;

    /**
     * 隧道高度 单位：m，精确到小数点后2位
     */
    @ApiModelProperty("隧道高度")
    @Excel(name = "隧道高度 单位：m，精确到小数点后2位")
    @JSONField(name = "bd_tunnel_height")
    private Long bdTunnelHeight;

    /**
     * 隧道长度 单位：m，精确到小数点后2位
     */
    @ApiModelProperty("隧道长度")
    @Excel(name = "隧道长度 单位：m，精确到小数点后2位")
    @JSONField(name = "bd_tunnel_length")
    private Long bdTunnelLength;

    /**
     * 建造日期 格式 2017-01-01 00:00:00
     */
    @ApiModelProperty("建造日期")
    @Excel(name = "建造日期 格式 2017-01-01 00:00:00")
    @JSONField(name = "bd_finish_date")
    private String bdFinishDate;

    /**
     * 避难层数量
     */
    @ApiModelProperty("避难层数量")
    @Excel(name = "避难层数量")
    @JSONField(name = "bd_refuge_num")
    private Long bdRefugeNum;

    /**
     * 避难层总面积 单位：m2
     */
    @ApiModelProperty("避难层总面积")
    @Excel(name = "避难层总面积 单位：m2")
    @JSONField(name = "bd_refuge_space")
    private Long bdRefugeSpace;

    /**
     * 避难层位置描述 最大长度50
     */
    @ApiModelProperty("避难层位置描述")
    @Excel(name = "避难层位置描述 最大长度50")
    @JSONField(name = "bd_refuge_position")
    private String bdRefugePosition;

    /**
     * 消防电梯是否使用 0-使用，1-未使用
     */
    @ApiModelProperty("消防电梯是否使用 0-使用，1-未使用")
    @Excel(name = "消防电梯是否使用 0-使用，1-未使用")
    @JSONField(name = "bd_fire_elevator_use")
    private Long bdFireElevatorUse;

    /**
     * 消防电梯数量
     */
    @ApiModelProperty("消防电梯数量")
    @Excel(name = "消防电梯数量")
    @JSONField(name = "bd_fire_elevator_num")
    private Long bdFireElevatorNum;

    /**
     * 消防电梯容纳总重量 单位：kg
     */
    @ApiModelProperty("消防电梯容纳总重量")
    @Excel(name = "消防电梯容纳总重量 单位：kg")
    @JSONField(name = "bd_fire_elevator_capacity")
    private Long bdFireElevatorCapacity;

    /**
     * 日常工作时间人数
     */
    @ApiModelProperty("日常工作时间人数")
    @Excel(name = "日常工作时间人数")
    @JSONField(name = "bd_normal_population")
    private Long bdNormalPopulation;

    /**
     * 最大容纳人数
     */
    @ApiModelProperty("最大容纳人数")
    @Excel(name = "最大容纳人数")
    @JSONField(name = "bd_max_population")
    private Long bdMaxPopulation;

    /**
     * GPS位置，经度
     */
    @ApiModelProperty("GPS位置，经度")
    @Excel(name = "GPS位置，经度")
    @JSONField(name = "gps_lng")
    private String gpsLng;

    /**
     * GPS位置，纬度
     */
    @ApiModelProperty("GPS位置，纬度")
    @Excel(name = "GPS位置，纬度")
    @JSONField(name = "gps_lat")
    private String gpsLat;

    /**
     * gsp类型，可选值为'WGS-84', 'GCJ-02', 'BD-09'
     */
    @ApiModelProperty("gsp类型，可选值为'WGS-84', 'GCJ-02', 'BD-09'")
    @JSONField(name = "gps_type")
    @Excel(name = "gsp类型，可选值为'WGS-84', 'GCJ-02', 'BD-09'")
    private String gpsType;

    /**
     * 额外单位信息，自定义信息，长度限制256字符
     */
    @ApiModelProperty("额外单位信息")
    @JSONField(name = "extra_data")
    @Excel(name = "额外单位信息，自定义信息，长度限制256字符 ")
    private String extraData;

    /**
     * 推送状态 0-未推送 1-推送失败 2-推送成功
     */
    @ApiModelProperty("推送状态 0-未推送 1-推送失败 2-推送成功")
    @Excel(name = "推送状态 0-未推送 1-推送失败 2-推送成功")
    private String pushStatus;

    /**
     * 创建用户ID
     */
    @ApiModelProperty("创建用户ID")
    @Excel(name = "创建用户ID")
    private Long createUserId;

    /**
     * 联网单位信息
     */
    @ApiModelProperty("联网单位信息")
    @TableField(exist = false)
    private TUnit unit;

    /**
     * 删除标识
     */
    private String delFlag;

}
